/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package practica1_cuenta;
import java.util.regex.*;
/**
 *
 * @author Ram_Charly
 */
public class Cuenta {
    //ATRIBUTOS
    private long numero;
    private String nip;
    private double saldo;
    private double interesAnual;
    private String titular;
    
    //CONSTRUCTORES
    public Cuenta()
            {
             numero=1234567890; 
             nip="5202";
             saldo=2000.0;
            interesAnual=0.16;
            titular="Juan Dominguez";
            }
    public Cuenta(long n, String ni, double sal,double interes, String tit)                     
    {
       numero=n;
       nip=ni;
       saldo=sal;
       interesAnual=interes;
       titular=tit;
    }
    
    //GET Y SET
    public long getNumero()
    {
        return numero;
    }
    public void setNumero(long n)
    {
        numero=n;
    }
    
   
     public String getNip()
    {
        return nip;
    }
    public void setNumer(String ni)
    {
        nip=ni;
    }
    
     public double getSaldo()
    {
        return saldo;
    }
    public void setSaldo(double sal)
    {
        saldo=sal;
    }
    
      public double getInteresAnual()
    {
        return interesAnual;
    }
    public void setInteresAnual(double interes)
    {
        interesAnual=interes;
    } 
    
     public String getTitular()
    {
        return titular;
    }
    public void setTitular(String tit)
    {
        titular=tit;
    } 
    
    //METODOS
    
    
    
    //RETIRA SALDO
    public boolean operacion(double cant)
    {
      if(cant<0){
          System.out.println("\n NO SE PUEDE RETIRAR ESA CANTIDAD...");
          return false;}
                  else if (cant>saldo)
                  {
                      System.out.println("\n NO SE PUEDE RETIRAR ESA CANTIDAD...");
                     return false; 
                  }
                      
      System.out.println("\n SU CANTIDAD A SIDO RETIRADA...");
      saldo=saldo-cant;
      return true;
                   
    }
    //IMPRIME SALDO
    public void operacion()
    {
        System.out.println("\n Saldo actual: " +saldo);
    }
    //CAMBIA NIP
    public void operacion(String nuevoNip)
    {   Pattern n= Pattern.compile("\\d+");
        Matcher m= n.matcher(nuevoNip);
        if(m.matches())
        {
                int nn=Integer.parseInt(nuevoNip);
                if((nn<10000 && nn>999))
                {   if(Cuenta.CambioNip(nuevoNip))
                    {
                        nip=nuevoNip;
                        System.out.println("Su Nip a sido cambiado exitosamente");
                        
                    }
                else System.out.println("Su Nip no pudo ser cambiado pues tiene numeros repetidos");
                }
                else
                System.out.println("Su Nip no pudo ser cambiado pues no tiene 4 numeros");
                
        }
        else
        System.out.println("Su Nip no pudo ser cambiado pues no es un numero");
        
        
    
    }
    //TRANSFIERE SALDO
    public boolean operacion(Cuenta destino,double cantidad)
    {
        if(operacion(cantidad))
        {
            destino.saldo=destino.saldo+cantidad;
            return true;
        }
        else {return false;}
    }
    public void imprimirInfo(){
        System.out.println("\n Titular : " + titular);
        System.out.println("\n Numero de cuenta: " + numero);
        System.out.println("\n Nip: " +nip);
        System.out.println("\n Saldo actual: " + saldo);
        System.out.println("\n Interes anual: " + interesAnual);
        
    }
    /////Funcion para verificar que no se repita algun digito/////
    public static boolean CambioNip(String n)
    {   int i;
        boolean a=true;
        for(i=0;i<n.length();i++)
        {   
            if (i<3)
            {
                if(n.charAt(i)==n.charAt(i+1))
                 a=false;
                
            }
        }
        return a;
    }   
    
    
    
    
}
